package com.zj.aopspringboot01;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component //将切面类声明为一个bean
@Aspect //声明这是一个切面类
public class LogAspect3 {
    //声明这是一个最终通知
    @After(value = "execution(* com.zj.aopspringboot01.UserService.*(..))&&args(id)",argNames = "id")
    public void logAdd(Object id) {
        //后置通知/最终通知部分
        System.out.println("after: args:" +id);

    }

    //声明这是一个最终通知，这种方式获取参数比上面要好
    @After(value = "execution(* com.zj.aopspringboot01.UserService.*(..))")
    public void logAdd2(JoinPoint pj) {
        //后置通知/最终通知部分
        System.out.println("after: args:" + Arrays.toString(pj.getArgs()));

    }
}
